package com.ken.apollo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ken.apollo.domain.bo.MailBatchSendBo;
import com.ken.apollo.domain.entity.MailBatchSend;
import com.ken.apollo.domain.query.MailBatchSendQuery;
import com.ken.apollo.domain.vo.MailBatchSendVo;

import java.util.List;

/**
 * 邮件群发记录表(MailBatchSend)表服务接口
 *
 * @author Ken
 * @since 2025-08-25
 */
public interface MailBatchSendService extends IService<MailBatchSend> {

    /**
     * 创建邮件群发任务
     *
     * @param mailBatchSendBo 邮件群发业务对象
     * @return 是否成功
     */
    boolean createBatchSendTask(MailBatchSendBo mailBatchSendBo);

    /**
     * 开始执行群发任务
     *
     * @param batchId 任务ID
     * @return 是否成功
     */
    boolean startBatchSend(Long batchId);

    /**
     * 查询邮件群发任务列表
     *
     * @param query 查询条件
     * @return 任务列表
     */
    List<MailBatchSendVo> listBatchSendTasks(MailBatchSendQuery query);

    /**
     * 根据ID查询邮件群发任务详情
     *
     * @param id 任务ID
     * @return 任务详情
     */
    MailBatchSendVo getBatchSendTaskById(Long id);

    /**
     * 取消群发任务
     *
     * @param batchId 任务ID
     * @return 是否成功
     */
    boolean cancelBatchSend(Long batchId);
    
    /**
     * 重试失败的群发任务
     *
     * @param batchId 任务ID
     * @return 是否成功
     */
    boolean retryBatchSend(Long batchId);
}